home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 4 / Assassins 4 (1999)(Weird Science).iso / docs / board-games / progammon2.7.doc < prev    next >
Text File  |  1992-09-02  |  25KB  |  574 lines

  1.  
  2.                             ProGammon
  3.                             
  4.                            Version 2.7
  5.                            
  6.                           9th July 1998
  7.                         
  8.                              FREEWARE
  9.                             
  10.                 The Ultimate Amiga Backgammon Game
  11.                          
  12.  
  13.  Introduction:
  14.  
  15.  Have you tried playing computer backgammon before?  Were you a little
  16.  disappointed at the poor game play?
  17.  
  18.  Most users will find that this program plays a very challenging game
  19.  of backgammon.  No matter what level you play at, your game will
  20.  improve by playing ProGammon.
  21.  
  22.  This program will keep track of your wins and losses so you can see how
  23.  good you or the Amiga really is.  It now also keeps track of gammons and
  24.  backgammons.
  25.  
  26.  It's operating system friendly and is very cpu & memory efficient so your
  27.  3-D rendering work will barely slow down while you play a game or 3.  :) 
  28.  
  29.  Requirements:
  30.  
  31.  This program should work on any Amiga with kickstart 2.04 or greater.
  32.  
  33.  With an AGA Amiga, this game will use a 640 x 480 multiscan productivity
  34.  screen, if available.  It also works in 640 x 256 PAL mode or 640 x 200
  35.  NTSC mode..
  36.  
  37.  One user also informed me that it works great on his Picasso II+ graphics
  38.  board in his A1200T.  Thanks Dirk!
  39.  
  40.  What's New: 
  41.  Version 2.7:
  42.  
  43.       -added a tool type called TRAINER.  This allows the user to
  44.        ask ProGammon to suggest a move anytime during gameplay.  A
  45.        second opinion is useful, even if you don't agree with it!
  46.        
  47.       -finally, a PAL tool type so the program will now work in
  48.        640 x 256 hi-res PAL if needed.
  49.       
  50.       -the last release introduced a major change in game play.  This
  51.        version merely contains some minor adjustments.
  52.  
  53.       -added a new section on interpreting the winning percentage.
  54.        If you like  mathematics  then check it out.
  55.  
  56.  Version 2.6:
  57.  
  58.       -complete rewrite of the AI to encourage more blocking and
  59.        maintaining of key positions.  Thanks Phillip !
  60.  
  61.       -added a NAME tool type and a CHEAT tool type so you can use
  62.        your own dice if you don't like the computer generated ones.
  63.  
  64.       -also added a DONE tool type.  See the Tool Type section.
  65.       
  66.       -click on the dice after you complete a game and the Amiga
  67.        winning percentage will now be displayed.
  68.  
  69.  Version 2.5:
  70.  
  71.       -improved the AI used during the late stages of the game.  It
  72.        should be much harder to gammon the Amiga.
  73.       
  74.       -added some code to encourage the Amiga to maintain a wall of
  75.        6 stones once it has established one.
  76.        
  77.       -cleaned up various routines for speed and size.
  78.        
  79.  Version 2.4:       
  80.  
  81.       -added an Undo function so you can start your move over again if
  82.        you need to.
  83.  
  84.       -fixed a bug in v2.3 where occasionally the program would prevent
  85.        you from making a valid move.
  86.  
  87.       -removed the debug_hunks which significantly reduced the size of
  88.        the program.
  89.  
  90.  Thanks to Nils Goers for all of the above suggestions and improvements.
  91.  
  92.       -finally got around to putting the documentation in AmigaGuide
  93.        format.
  94.  
  95.  The Basics:
  96.  
  97. The game begins with the following board setup:
  98.  
  99.        ********************************************       Direction of
  100.        *  24 23 22 21 20 19    18 17 16 15 14 13  *         Movement:
  101.        *   v  v  v  v  v  v     v  v  v  v  v  v  *
  102.        *   X              O        O           X  *         --->
  103.        *   X              O        O           X  *
  104.        *                  O        O           X  *             |
  105.        *                  O                    X  *             |
  106.        *                  O                    X  *             |
  107.        *                                          *             V
  108.        *                    3 5                   *
  109.        *                                          *             |
  110.        *                  X                    O  *             |
  111.        *                  X                    O  *             |
  112.        *                  X        X           O  *             V
  113.        *   O              X        X           O  *
  114.        *   O              X        X           O  *         <---
  115.        *   ^  ^  ^  ^  ^  ^     ^  ^  ^  ^  ^  ^  *
  116.        *   1  2  3  4  5  6     7  8  9 10 11 12  *
  117.        ********************************************
  118.  
  119.            ^  ^  ^  ^  ^  ^
  120.            Your  HOME  area is positions 1 to 6.
  121.  
  122.  There are 24 positions on the board and each player begins with 15 stones.
  123.  'X' represents your stones and the 'O' represents the Amiga's stones.  In
  124.  the diagram above you have 2 stones on position 24, 3 stones on position
  125.  8 and 5 stones each on positions 6 and 13.  The 3 and the 5 in the center
  126.  of the board represent the dice.
  127.  
  128.  Each player takes turns rolling the dice and moving their stones an amount
  129.  equal to whatever was rolled.
  130.  
  131.  The object of the game is to move your stones in a clockwise direction
  132.  into your home area.  When all 15 stones are home you can remove them from
  133.  the board depending on what you roll.  The first player who removes all of
  134.  their stones from the board wins the game.
  135.  
  136.  The game starts with each player rolling one die to determine which player
  137.  gets to go first.  For example, if the Amiga rolled a 3 and you rolled a
  138.  5 then you would start by using this combination for your first move.
  139.  Here is one possibility:
  140.  
  141.                  ********************************************
  142.                  *  24 23 22 21 20 19    18 17 16 15 14 13  *
  143.                  *   v  v  v  v  v  v     v  v  v  v  v  v  *
  144.            MOVE 1--> X        X     O        O           X  *
  145.                  *                  O        O           X  *
  146.     Using the 3  *                  O        O           X  *
  147.                  *                  O                    X  *
  148.                  *                  O                     <---MOVE 2
  149.                  *                                          *
  150.                  *                    _ _                   *  Using the 5
  151.                  *                                          *
  152.                  *                  X                    O  *
  153.                  *                  X        X           O  *
  154.                  *                  X        X           O  *
  155.                  *   O              X        X           O  *
  156.                  *   O              X        X           O  *
  157.                  *   ^  ^  ^  ^  ^  ^     ^  ^  ^  ^  ^  ^  *
  158.                  *   1  2  3  4  5  6     7  8  9 10 11 12  *
  159.                  ********************************************
  160.                                              ^
  161.  
  162.  With the 3 I moved one stone from position 24 to position 21.  For the
  163.  second move I moved a stone from position 13 to position 8.  After the
  164.  opening move each player alternates rolling the dice.
  165.  
  166.  Either player can move to any position as long as it is not blocked by 2
  167.  or more of the opposing players stones.  In the above example I would not
  168.  have been allowed to use the 5 to move a stone from position 24 to
  169.  position 19 because the Amiga has position 19 blocked.
  170.  
  171.  It is possible to move to a position that has only 1 Amiga stone on it.
  172.  When this happens, your stone will take possesion of that point and the
  173.  Amiga stone will be knocked off onto the center bar.  Any stone on the
  174.  bar has to enter the board in the opposing players home area.  You must
  175.  get back on the board, on a point that is not blocked, before any further
  176.  moves are allowed.  If you cannot make a move just click once on the dice
  177.  to give up your turn and resume play.
  178.  
  179.  When all of your stones are home, you can start removing them from the
  180.  board.  This is called bearing off.  If, for example, you rolled a 6 and
  181.  a 2, you could remove one stone from position 6 and another one from
  182.  position 2.  If you rolled a 6 but didn't have any stones on position 6
  183.  to remove then you are allowed to take one stone off the next highest
  184.  position.  It is also legal to move stones within your home area rather
  185.  than bearing them off.  It might be an advantage to do this if the Amiga
  186.  still has some stones in your home area and is trying to knock you off
  187.  onto the bar.
  188.  
  189.  The only other rule is that both players must use as much of what they
  190.  rolled as possible.  If you rolled a 5 and a 3 and it is possible to use
  191.  both the 5 and the 3 then you must make both moves.  If you can only use
  192.  the 5 or the 3 but not both then you are required to use the higher
  193.  amount(5).  The Amiga plays by these rules and now, since version 2.3,
  194.  you are forced to play by these rules also.
  195.  
  196.  Game Play: 
  197.  
  198.  To move a stone just click once on the stone and then once on the spot
  199.  where you want it to go.  If you did it right then the stone should move 
  200.  to the new location or else a message will appear to help you out.
  201.  
  202.  If you roll doubles ( i.e. two 3's ) then instead of getting two moves
  203.  of 3 you get four moves of 3.  
  204.  
  205.  Anytime during a move you can get an update to how many moves you have
  206.  left by clicking anywhere outside the main board area.  In the message
  207.  area will be displayed the dice values that have not yet been used.
  208.  
  209.  You can also make multiple moves.  If, for example, you roll a  3  and
  210.  a  4  then you are allowed to make one move of  7  as long as both points
  211.  between your present location and your destination are not blocked.
  212.  
  213.  If you are unable to make a move then just click once on the dice to
  214.  continue with the game.  If you select a stone by mistake then just click
  215.  on that same stone to start your move over again.
  216.  
  217.  Once all your stones are in your home area, you can remove them from the
  218.  board by double clicking on them.
  219.  
  220.  A gammon will be declared if one player is able to get all his stones off
  221.  before the other player has removed one.  This is equivalent to winning 2
  222.  games.  
  223.  
  224.  A backgammon occurs when one player gammons the other player plus he traps
  225.  at least one of the opposing players stones in his home area.  This is
  226.  worth 3 wins.
  227.  Menus:
  228.  
  229.  BAR
  230.         
  231.  With this option all 15 stones will start off on the center bar.  You
  232.  will have to get all the stones back on the board before you can start
  233.  to move them.  Just select  BAR  in the menus and then select  New Game
  234.  to play this version.
  235.  
  236.  Undo Move        
  237.  
  238.  You can restart your move from the beginning by selecting  this from the
  239.  menus.  You could also accomplish the same thing by clicking on the
  240.  stone and putting it back wherever it came from.
  241.  
  242.  Colors
  243.  
  244.  Selecting this will allow you to adjust both the board colors as well
  245.  as the speed of the game.  
  246.  
  247.  If you select  SAVE  in the color adjustment window then your game
  248.  preferences will be saved to a 266 byte file called  gammon.prefs  in 
  249.  the current directory.  The program keeps track of the AMIGA's winning
  250.  percentage in this file as well as statistics on the dice.  If you want 
  251.  this feature then remember to click on  SAVE  before the end of the 
  252.  first game.  
  253.  
  254.  Stats
  255.  
  256.  This menu item will display a table of what you have rolled so far as
  257.  well as what your average roll has been.  A long term average roll of
  258.  8.167 is ideal.
  259.  
  260.  Statistics on wins/gammons/backgammons are now also displayed within
  261.  this window.
  262.  
  263.  Clicking on the left side of the stats window will show the statistics
  264.  for the present series of games and clicking on the right side will show
  265.  the overall statistics for all games that have been played, including 
  266.  previous games stored in the  gammon.prefs  file.
  267.  
  268.  Tool Types:
  269.  
  270.     MAINFONT=topaz
  271.     FONTSIZE=8
  272.  
  273.  These 2 tool types allow you to use any reasonably sized font for your
  274.  menus, message display and window title in VGA mode.  If the program is
  275.  unable to find this font or if your size choice is too large then it will
  276.  use topaz 8 as the default.
  277.  
  278.     REVERSE
  279.  
  280.  I prefer setting up the board so that you move your stones from the
  281.  upper left part of the screen to the lower left in a clockwise direction.
  282.  If you would prefer that the board was set up so that your stones move
  283.  from the upper right part of the board to the lower right in a counter-
  284.  clockwise direction then use this tool type.
  285.  
  286.     NTSC
  287.  
  288.  This tool will force the program to use a 640x200 NTSC screen or dblNTSC
  289.  screen if available.
  290.  
  291.     PAL
  292.  
  293.  As above except this one causes ProGammon to use a 640x256 PAL screen.
  294.  
  295.     NAME=Kevin
  296.  
  297.  Replace Kevin with your name and then you won't have to be called Human
  298.  anymore.
  299.  
  300.     CHEAT
  301.  
  302.  This tooltype simply lets you use your own dice.  Click on the dice in
  303.  one of 6 quadrants and you will see what I mean.
  304.  
  305.  If you would like to be able to create an external dice file and then have 
  306.  this program read in dice values from there then let me know.
  307.  
  308.     DONE
  309.     
  310.  With this tool type you will have to click on the dice after each move to
  311.  signal to the Amiga that you are done.  Some users like to be able to see
  312.  how a move looks before having to commit themselves to it.  No more
  313.  accidental moves.
  314.  
  315.     TRAINER
  316.     
  317.  Use this tool type to improve your game.  Click anywhere on the lower part
  318.  of the board and the Amiga will suggest a move for you.  For example, if
  319.  the opening roll was  ( 2 - 3 ) then the Amiga might display this:
  320.  
  321.     13/11  13/10
  322.     
  323.  This means move one stone from your 13 point to your 11 point and move
  324.  another stone from your 13 point to your 10 point.  The points are
  325.  numbered from 1 to 24 with 24 being the farthest point away from your home
  326.  area.  See  The Basics  for further board numbering information.
  327.  
  328.  A display of  Bar/23  means move a stone from the Bar to point 23 and
  329.  5/0  suggests that you should bear a stone off from the 5 point.
  330.  
  331.  If you are having trouble winning, then learning to play like ProGammon
  332.  does is a good first step.  As you improve, you should start to see moves
  333.  that are even better than the ones that PG suggests.
  334.  
  335.  Winning should now be easy, or at least, easier!
  336.  
  337.     GLENSKI
  338.     
  339.  Finally, the GLENSKI tool type.  One user likes to be able to select a
  340.  New Game from the keyboard using "Right Amiga N".  You can also have this
  341.  feature by using this tool type.
  342.  
  343.  Testing the Dice:
  344.  The dice used in this program have been rolled millions of times in order
  345.  to test them for randomness and fairness.  They are produced using the
  346.  SAS/C random number generating function called drand48().  In testing, I
  347.  have found the numbers returned by this function to be 100% random.
  348.  
  349.  Here are some answers to the usual questions that I have received:
  350.  
  351.  There is only one subroutine that controls the rolling of the dice.  The
  352.  RollDice()  routine has no idea whether it is being called to roll the
  353.  dice for you or for the Amiga.  It does not check to see who is on the bar
  354.  or what points are blocked or whether it's the start of the game or the
  355.  end.  All it does is just roll the dice.
  356.  
  357.  The Amiga is not cheating just because it rolls a 6 to start the game or
  358.  rolls doubles to end the game.  It has gotten lucky and if you play enough
  359.  games I'm sure that you will get lucky too.
  360.  
  361.  Every roll of the dice will be saved in the  gammon.prefs  file after you
  362.  select  Quit  in the menus or close the game screen.  During the game you
  363.  can select  Stats  in the menus to see the averages for the games that you
  364.  are presently playing.  By clicking on the right portion of the statistics
  365.  screen you can also examine the stats saved in the  gammon.prefs  file.
  366.  
  367.  After you play about 250+ games, you should be convinced that the dice are
  368.  100% legal.  
  369.  
  370.  If you still think that this game is cheating then you can use the CHEAT
  371.  tooltype which will allow you to enter your own dice values.  Play a few
  372.  games with a real set of dice and you will probably find that this program
  373.  still plays a pretty good game of backgammon.
  374.  
  375.  If you would like to use your own random number generating routines with
  376.  this program then let me know and I'll see what I can do.
  377.  
  378.  Math Facts:
  379.  
  380.  This section is optional but if your background in mathematics is fairly
  381.  strong then you may find what follows very interesting.
  382.  
  383.  Let's say there are 2 computer backgammon players that are completely 
  384.  equal. They use the exact same algorithm.  In the long run, they will both
  385.  win 50% of the games that they play against each other.
  386.  
  387.  Now, you know from playing ProGammon that in a short set of games you can
  388.  be either a hero or a bum!  Recently, I went 1 Win and 9 Losses during a
  389.  set of 10 games.  At other times, I have gone 9 Wins and 1 Loss.
  390.  
  391.  The point I'm trying to make is that you can't judge a player or a game
  392.  over a small set of games.  A 10 game set neither proves that a player
  393.  or program is stupid or brilliant.  There is a lot of luck involved in a
  394.  game of backgammon.  This is why you have to play a large number of games
  395.  before the winning percentage starts to have some real meaning.
  396.  
  397.  So, the question is, how many games is enough?  Is 100 games enough, or
  398.  300, or 500, or perhaps even 900?  I have played a couple of 300 game
  399.  sets and by then the average dice rolls for both players have been near
  400.  the 8.167 mark.  I used to think that at this point the winning percentage
  401.  would start to have some real meaning.
  402.  
  403.  Guess what?  Mathematically, or scientifically speaking, this number
  404.  really doesn't mean as much as you might think.
  405.  
  406.  Even after playing 500 games, 2 completely equal players can have their
  407.  winning percentage vary between 0.400 and 0.600.  Most of the time they
  408.  are going to win about 250 games each because they are equally skilled.
  409.  However, one player may get extremely lucky over a 500 game set and end 
  410.  up winning 300 games and the other player only 200.  Believe it or not,
  411.  this can happen even though they are completely equal.
  412.  
  413.  I've included a computer generated chart to help explain this further. 
  414.  
  415.  The implications are kind of interesting.
  416.  
  417.  The amount of variation quoted above is between 2 players that play
  418.  consistent backgammon.  They never get tired and they never learn from
  419.  their mistakes.  The moves they make never change or evolve.
  420.  
  421.  People, on the other hand, as they learn are constantly changing how they
  422.  play backgammon.  They find a particular style of play that seems to work
  423.  over 100 games and they stick to it.  What doesn't work is abandoned.
  424.  
  425.  There is so much variation in a game of backgammon, that coming to any
  426.  conclusions concerning what works and what doesn't is often times wrong! 
  427.  The amount of variation increases when you add in the fact that people
  428.  get tired and the decisions they make concerning when to run, when to 
  429.  hit, etc., etc. are constantly changing. 
  430.  
  431.  Have a look at the following chart:
  432.  
  433.    W I N  %      N U M B E R  O F  G A M E S  P E R  S E T           
  434.                 
  435.                      100       300       500       900
  436.  
  437.     0.300  ->          1         0         0         0
  438.     0.310  ->          0         0         0         0
  439.     0.320  ->          1         0         0         0
  440.     0.330  ->          6         0         0         0
  441.     0.340  ->          5         0         0         0
  442.     0.350  ->         10         0         0         0
  443.     0.360  ->         12         0         0         0
  444.     0.370  ->         26         0         0         0
  445.     0.380  ->         40         1         0         0
  446.     0.390  ->         68         0         0         0
  447.     0.400  ->        107         2         0         0
  448.     0.410  ->        138        18         1         0
  449.     0.420  ->        243        25         3         0
  450.     0.430  ->        293        83        11         0
  451.     0.440  ->        399       162        51         8
  452.     0.450  ->        463       302       141        35
  453.     0.460  ->        555       515       355       149
  454.     0.470  ->        704       811       751       482
  455.     0.480  ->        738      1085      1184      1135
  456.     0.490  ->        781      1331      1593      1999
  457.     0.500  ->        824      1363      1809      2384
  458.     0.510  ->        785      1261      1649      1926
  459.     0.520  ->        735      1080      1132      1158
  460.     0.530  ->        676       805       756       542
  461.     0.540  ->        589       577       335       149
  462.     0.550  ->        472       305       150        28
  463.     0.560  ->        390       162        63         5
  464.     0.570  ->        297        72         8         0
  465.     0.580  ->        214        25         6         0
  466.     0.590  ->        163         8         1         0
  467.     0.600  ->        102         3         1         0
  468.     0.610  ->         62         4         0         0
  469.     0.620  ->         41         0         0         0
  470.     0.630  ->         26         0         0         0
  471.     0.640  ->         14         0         0         0
  472.     0.650  ->         10         0         0         0
  473.     0.660  ->          6         0         0         0
  474.     0.670  ->          2         0         0         0
  475.     0.680  ->          1         0         0         0
  476.     0.690  ->          1         0         0         0
  477.     0.700  ->          0         0         0         0
  478.  
  479.  Ok now, what do all these numbers really mean??
  480.  
  481.  I wrote a program to simulate 2 Amigas playing backgammon against each
  482.  other.  They are both using the same algorithm and are both as equal as
  483.  can be.
  484.  
  485.  The first column is the winning percentage just like what is displayed
  486.  in ProGammon.
  487.  
  488.  The second through fifth columns represent sets of games that they played
  489.  against each other.  The two Amigas were always fighting about who was the
  490.  better backgammon player so they started by playing sets of 100 games.
  491.  At the end of each set of 100 games, Player A would see what his winning
  492.  percentage was and then he would add 1 to the appropriate row.
  493.  
  494.  The first time they got together to determine a champion they played
  495.  10,000 sets of 100 games each.  (i.e. 10,000 x 100 = 1,000,000 games)
  496.  If you look at the table you will see that they played dead even at
  497.  ( 0.500 ) 824 out of the 10,000 sets they played ( 8.24% of the time ). 
  498.  
  499.  If you look up at the 0.350 level you will see that on 10 occasions
  500.  Amiga A had a winning percentage of only 0.350 after a 100 game set.
  501.  These two players are totally equal but because of the luck of the dice,
  502.  look how poorly Amiga A did on 10 different occasions.
  503.  
  504.  There was also 13 other times when his winning percentage was worse.  On
  505.  those occasions Amiga A only won between 0.300 and 0.340 of the time.
  506.  
  507.  What this proves is that if you play 100 games and you think the winning
  508.  percentage is telling you whether you're a good player or ProGammon is a
  509.  good program is nonsense.  You can't come to any conclusions whatsoever.
  510.  
  511.  On one occasion Player A won only 30 of 100 games and at the other extreme
  512.  one time Player A won 69 out of 100 games.  This large variation isn't
  513.  because Player A or B were playing tremendously or lousy.  They were
  514.  always playing equally intelligently.  The variation is due solely to
  515.  the randomness of the dice.
  516.  
  517.  If you look at the other columns you will see that there is still a lot
  518.  of variation even when they sat down and played 300 game sets, 500 game
  519.  sets and finally they played a 900 game set 10,000 times.
  520.  
  521.  Even after playing a 900 game set of backgammon, the winning percentage
  522.  varied between 0.440 and 0.560.  If your winning percentage is 0.560
  523.  after playing 900 games, you have not proven that you are clearly 
  524.  superior. 
  525.  
  526.  Though unlikely, it is still possible that you were just lucky.  It is
  527.  possible that you could play another 900 game set and the Amiga could
  528.  come out on top.
  529.  
  530.  Try to give the above some thought before declaring yourself an expert
  531.  backgammon player after winning 10 games in a row.
  532.  
  533.  Acknowledgments:
  534.  
  535.  Thanks very much to the 11 people that took the time to register.
  536.  
  537.  Special thanks to Nils Goers who showed me the correct way to compile a
  538.  program.
  539.  
  540.  Many, many thanks to Phillip A. Cochran who showed me how backgammon is
  541.  supposed to be played.  Hopefully this version will be a little more
  542.  challenging!
  543.  
  544.  I'd also like to thank Glenski and Claire Shannon for their ideas.  It's
  545.  good to know that some people appreciate a good game of backgammon.
  546.  
  547.  Glenski has contributed many ideas including the latest  PAL  version.  
  548.  His eX wife Claire also helped with the  TRAINER  feature.  Thanks to
  549.  both of you for all your help testing this program.
  550.  
  551.  Without the encouragement of the registered users, this program would not
  552.  have reached it's current level.
  553.  
  554.  Freeware:
  555.  
  556.  You will be hard pressed to find a significantly better playing computer
  557.  backgammon game.  This time, I mean it!
  558.  
  559.  Questions, comments and bug reports are always welcome.
  560.  
  561.  Long live the AMIGA!
  562.  
  563.  Mail:
  564.  
  565.     Kevin Glynn
  566.     2844 B - 42nd Street S.W.
  567.     Calgary, AB  T3E 3M1
  568.     CANADA
  569.  
  570.  e-mail:
  571.  
  572.     glynnk@cadvision.com
  573.     
  574.